package com.transaction.test.local.mybatis.service;

import com.transaction.test.local.mybatis.bean.User2;

/**
 * @author mdl
 * @date 2019/12/19
 */
public interface User2Service {
    /**
     * PROPAGATION_REQUIRED
     * 如果当前没有事务，就新建一个事务，
     * 如果已经存在一个事务中，加入到这个事务中。这是最常见的选择。
     * @param user
     */
    void addRequired(User2 user);

    /**
     * PROPAGATION_REQUIRED方法内抛RuntimeException
     * @param user
     */
    void addRequiredException(User2 user);

    /**
     * PROPAGATION_REQUIRES_NEW
     * 新建事务，如果当前存在事务，把当前事务挂起。
     * @param user
     */
    void addRequiresNew(User2 user);

    /**
     * PROPAGATION_REQUIRES_NEW方法内抛RuntimeException
     * @param user
     */
    void addRequiresNewException(User2 user);

    /**
     * PROPAGATION_NESTED
     * 如果当前存在事务，则在嵌套事务内执行。如果当前没有事务，则执行与PROPAGATION_REQUIRED类似的操作。
     * @param user
     */
    void addNested(User2 user);

    /**
     * PROPAGATION_NESTED方法内抛RuntimeException
     * @param user
     */
    void addNestedException(User2 user);

    void truncate();

}
